--[[
	最小公约数

--]]


--1相减法：两数中的大数减小数，其差与减数再进行大数减小数，直到差与减数相等为止，此时的差或者减数就是最大公约数。

local a, b, c;
--输入的时候注意：a>b
a = 25
b = 15
c = a - b;
while c~=b do
    if b > c  then     
        a = b
        b = c
    else    
        a=c
    end
    c = a - b
end
print("Maximal common divisor is %d\n", b)


--2辗转相除法：它根据递推策略设计的，求解效率更高。
a = 25
b = 15
c = a%b
while c~=0 do 
	a = b
	b = c
	c = a%b
end

print(b)


--[[
	素数

--]]
local k, n,i,x
x = 11
n = math.sqrt(x);
i = 0;
for k = 2, n do 
    if x%k == 0 then     
        i = 1;
        print(string.format("%d is not a prime number.\n",x))
        break;
    end
end
    
if (i == 0) then 
    print(string.format("%d is  a prime number.\n", x))
end


--[[
	裴波那挈数列  
    裴波那挈数列具有以下特点：

        a1,a2已知

        a(n)=a(n-1)+a(n-2)  n>=3

   我们在很多地方都会遇到这个数列，比如兔子繁殖问题、树枝问题、上楼方式问题、蜂房问题等等。我们既可以用递推，也可以用递归的方法来解决。
--]]


local a = 1
local b = 1
print(string.format("%d %d ", a,b))
while (a<20) do 
    a = a + b;
    b = a + b;
    print(string.format("%d %d ", a, b))
end